
import java.awt.Point;


public class MoverEnZigZagVertical {
	
	boolean direccionHaciaIzquierda;
	boolean direccionHaciaAbajo;
	float radio;
	
	public MoverEnZigZagVertical(float radioDeColision){
		
		radio = radioDeColision;
		direccionHaciaIzquierda = true;
		direccionHaciaAbajo = true;
	}
	
	//Verifica la direccion actual y la invierte.
	public void invertirDireccionVertical(){
		
		if(direccionHaciaAbajo == true)
			direccionHaciaAbajo = false;
		else
			direccionHaciaAbajo = true;
	
	}
	
	//Verifica la direccion actual y la invierte.
	public void invertirDireccionHorizontal(){
		
		if(direccionHaciaIzquierda == true)
			direccionHaciaIzquierda = false;
		else
			direccionHaciaIzquierda = true;
	
	}
	
	
	public Point mover(Point posicionActual, int cantidadDeMovimientos){
		
		Point limiteMaximo;
		Point limiteMinimo;
		
		//busco los limites de la pantalla
		limiteMaximo = limitesDeMovimiento.getLimiteMaximo();
		limiteMinimo = limitesDeMovimiento.getLimiteMinimo();
		
		
		//Verificamos los limites superior e inferior, y llegado el caso invierto la direccion de movimiento
		if((posicionActual.getY()) - (limiteMinimo.getY()) <= (3*radio)|((limiteMaximo.getY())-(posicionActual.getY()) <= radio))
			this.invertirDireccionVertical();
		
		//Verificamos los limites derecho e izquierdo, y llegado el caso invierto la direccion de movimiento
		if((posicionActual.getX()) - (limiteMinimo.getX()) <= (3*radio)|((limiteMaximo.getX())-(posicionActual.getX()) <= radio)){
			this.invertirDireccionHorizontal();
			cantidadDeMovimientos = 0;
		}
		else if((cantidadDeMovimientos % 4 == 0)&(cantidadDeMovimientos > 0)){
			this.invertirDireccionHorizontal();
		}
		
		//Incremento un paso deacuerdo a la direccion
		if((direccionHaciaAbajo = true)&(direccionHaciaIzquierda = true)){
			posicionActual.translate(-1, -1);
		}
		if((direccionHaciaAbajo = true)&(direccionHaciaIzquierda = false)){
			posicionActual.translate(1, -1);
		}
		if((direccionHaciaAbajo = false)&(direccionHaciaIzquierda = true)){
			posicionActual.translate(-1, 1);
		}
		if((direccionHaciaAbajo = false)&(direccionHaciaIzquierda = false)){
			posicionActual.translate(1, 1);
		}
		
		return posicionActual;
	}
	
	
	
}
